{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.decomposition import PCA\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "\n",
    "np.random.seed(1001)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 随机生成训练数据\n",
    "n = 200\n",
    "x = np.linspace(-4, 4, n)\n",
    "error = np.random.randn(n)\n",
    "y = 1 * x + error\n",
    "data = np.c_[x, y]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>PCA(n_components=2)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">PCA</label><div class=\"sk-toggleable__content\"><pre>PCA(n_components=2)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "PCA(n_components=2)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 主成分分析\n",
    "model = PCA(n_components=2)\n",
    "model.fit(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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FSKqFy05uU+vGZxuOWsG12MwEBFRaZgrRFQvWnJyn69m8NRcHAM9foyFotg5Fi66ZamUws6xMB7Zdaik1xdSj8FARESlYa4QUb1oyQu1QghsvnQDPvKDZ7DvyBwsQ4NSgCMVXj4WxT/9ZHfRS0fVvqSUDIbsy1ihiI0z+jvZpISIqI4xV4ioXrTkyv3h6Rhu3LIDI1NRWIaGmOMh6rgwNYHeNqvopaNaXFJikxIiosbFXCGietFyK/fpA2hPW2IlY8528dLROXhSYVWHD8DCS0frB7pSn1HKJaX015dqdacf375qE+sRExE1EOYKEdWTllu5zzWAep6CpgnEXYmoI1OvzXfpqJaXlIQQWD/QhYvXrcH6gS4OwEREdY65QkT1pOUm97kGUFNPfA1KKYSjDqKOB0DlvXTES0pERJTEXCGietJyx3LSB9DkQKxrgJQKngKm5uIIRWz4DA3tPgPrB7sWXDriJSUiIkpirhBRPWm5lfvscmVKKYyGolAK0EVi+1IAiNoeXKmw+dKFl454SYmIiJKYK0RUT1pu5T45gN5w33bsnZiBpxSitkTQp2OwOwBPAo4noesCcdvDkdl4zhJkvKREREQAc4WI6kvLTe6BzAH0we0TuPfpEaxstwAkBtAAdACAJxXGQ7G8FQqSl5QqqWBARETNg7lCRPWi5Y7lJCUH0Ddv7Js/25j567zERERE5WCuEFE9aNnJfVK+luGhiI3h/g5eYiIiorIwV4hoObX85J6XmIiIqJqYK0S0nESxltZDQ0NqZGRkiR5n+SileImJiGpCCDGqlBpa7ueoF8wVIqLFKZQrLXmhNhdeYiIiompirhDRcmj5YzlERERERM2Ck3siIiIioibByT0RERERUZPg5J6IiIiIqElwck9ERERE1CQ4uSciIiIiahKc3BMRERERNQlO7omIiIiImgQn90RERERETYKTeyIiIiKiJsHJPRERERFRk+DknoiIiIioSXByT0RERETUJDi5JyIiIiJqEpzcExERERE1CU7uiYiIiIiaBCf3RERERERNgpN7IiIiIqImIZRShV8gRBzAkaV5HCKiprRKKeVb7oeoF8wVIqJFy5srRSf3RERERETUGHgsh4iIiIioSXByT0RERETUJDi5JyIiIiJqEpzcExERERE1CU7uiYiIiIiaBCf3RERERERN4v8HUHh4eV4qexkAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 960x480 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 将模型结果可视化\n",
    "fig = plt.figure(figsize=(12, 6), dpi=80)\n",
    "# 原始数据\n",
    "ax = fig.add_subplot(1, 2, 1)\n",
    "ax.scatter(data[:, 0], data[:, 1], alpha=0.8)\n",
    "ax.set_xlim([-6, 6])\n",
    "ax.set_ylim([-6, 6])\n",
    "ax.get_xaxis().set_visible(False)\n",
    "ax.get_yaxis().set_visible(False)\n",
    "# 模型结果\n",
    "ax = fig.add_subplot(1, 2, 2)\n",
    "ax.scatter(data[:, 0], data[:, 1], alpha=0.8)\n",
    "m = model.mean_\n",
    "for v, l in zip(model.components_, model.explained_variance_):\n",
    "    start, end = m, m + 1.5 * np.sqrt(l) * v\n",
    "    ax.annotate(\"\", xy=end, xytext=start, arrowprops=dict(facecolor=\"k\", width=2.0))\n",
    "ax.set_xlim([-6, 6])\n",
    "ax.set_ylim([-6, 6])\n",
    "ax.get_xaxis().set_visible(False)\n",
    "ax.get_yaxis().set_visible(False)\n",
    "plt.savefig('pca_example.png', dpi=200)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
